Git 多个提交的合并

查看了一些博客,记录一下自己实践后有效的方法。

比如,如果我们想合并 最近三个 提交:

  • 首先查看提交历史: git log
1
2
3
4
commit 30ebe082dbb2390af801d356c07e9d7ecf1f1f8c (HEAD -> V3, origin/V3)......
commit 10012dc9eef4f46c3d81ccaa3f4975942ccb3051 (HEAD -> V3, origin/V3)......
commit 4769ff6c36c7ec78d336b6ea37be6609cfa95199 (HEAD -> V3, origin/V3)......
commit 5889b3982ad997bef7b58b7e054d6c186d0f7d37 (HEAD -> V3, origin/V3).......
  • 合并命令 git rebase -i HEAD~3

执行了 rebase 命令之后,会弹出一个窗口:

1
2
3
pick 3ca6ec3   '判断Zookeeper服务目录是否存在,否则创建'
pick 1b40566 '判断Zookeeper服务目录是否存在,否则创建'
pick 53f244a '判断Zookeeper服务目录是否存在,否则创建'
  • 将除了第一个的 pick,其他都改为 ssquash
1
2
3
pick 3ca6ec3   '判断Zookeeper服务目录是否存在,否则创建'
s 1b40566 '判断Zookeeper服务目录是否存在,否则创建'
s 53f244a '判断Zookeeper服务目录是否存在,否则创建'

修改后保存退出,这里操作和 Vim 是一样的

  • git log 一下,发现提交已经合并。到这里以后,git status 后会看到,提示让你 git pull 一下,千万不要这样做!否则你会发现这三条白合并了,还平白多了两条 commit

  • 强制 push 上去 git push -f。要确保强制push不会覆盖了别人的代码,如果这个分支只有你维护那就可以为所欲为了

到此,合并多个远程分支成功~

0%